.\" Copyright (C) 1994, 1995, Daniel Quinlan <quinlan@yggdrasil.com>
.\" Copyright (C) 2002-2008, 2017, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Copyright (C) 2023, Alejandro Colomar <alx@kernel.org>
.\"
.\" SPDX-License-Identifier: GPL-3.0-or-later
.\"
.TH proc_buddyinfo 5 2024-05-02 "Linux man-pages 6.9.1"
.SH NAME
/proc/buddyinfo \- memory fragmentation
.SH DESCRIPTION
.TP
.I /proc/buddyinfo
This file contains information which is used for diagnosing memory
fragmentation issues.
Each line starts with the identification of the node and the name
of the zone which together identify a memory region.
This is then
followed by the count of available chunks of a certain order in
which these zones are split.
The size in bytes of a certain order is given by the formula:
.IP
.in +4n
.EX
(2\[ha]order)\ *\ PAGE_SIZE
.EE
.in
.IP
The binary buddy allocator algorithm inside the kernel will split
one chunk into two chunks of a smaller order (thus with half the
size) or combine two contiguous chunks into one larger chunk of
a higher order (thus with double the size) to satisfy allocation
requests and to counter memory fragmentation.
The order matches the column number, when starting to count at zero.
.IP
For example on an x86-64 system:
.RS -12
.EX
Node 0, zone     DMA     1    1    1    0    2    1    1    0    1    1    3
Node 0, zone   DMA32    65   47    4   81   52   28   13   10    5    1  404
Node 0, zone  Normal   216   55  189  101   84   38   37   27    5    3  587
.EE
.RE
.IP
In this example, there is one node containing three zones and there
are 11 different chunk sizes.
If the page size is 4 kilobytes, then the first zone called
.I DMA
(on x86 the first 16 megabyte of memory) has 1 chunk of 4 kilobytes
(order 0) available and has 3 chunks of 4 megabytes (order 10) available.
.IP
If the memory is heavily fragmented, the counters for higher
order chunks will be zero and allocation of large contiguous areas
will fail.
.IP
Further information about the zones can be found in
.IR /proc/zoneinfo .
.SH SEE ALSO
.BR proc (5)
